home *** CD-ROM | disk | FTP | other *** search
/ Danny Amor's Online Library / Danny Amor's Online Library - Volume 1.iso / html / faqs / faq / motif-faq / part2 < prev    next >
Encoding:
Text File  |  1995-07-25  |  58.5 KB  |  1,442 lines

  1. Subject: Motif FAQ (Part 2 of 6)
  2. Newsgroups: comp.windows.x.motif,comp.answers,news.answers
  3. From: ksall@cen.com (Ken Sall)
  4. Date: 11 Oct 1994 07:51:55 GMT
  5.  
  6. Archive-name: motif-faq/part2
  7. Last-modified: OCT 10, 1994
  8. Posting-Frequency: monthly
  9. Organization: Century Computing, Inc.
  10. Version: 3.8
  11.  
  12.  
  13.  
  14. -----------------------------------------------------------------------------
  15. Subject: 27)  TOPIC: MOTIF and the WORLD WIDE WEB (WWW)
  16.  
  17. -----------------------------------------------------------------------------
  18. Subject: 28)  Where's an HTML version of the Motif FAQ on World Wide Web
  19. (WWW)?
  20.  
  21. [Last modified: Sept 94]
  22.  
  23. Answer: An automatically generated HTML version of this Motif FAQ can be found
  24. at WWW URL:
  25.  
  26.     http://www.cis.ohio-state.edu/hypertext/faq/usenet/motif-faq/top.html
  27.  
  28. -----------------------------------------------------------------------------
  29. Subject: 29)* What are other interesting WWW URLs which are related to Motif?
  30.  
  31. [Last modified: Oct 94]
  32.  
  33. Answer:
  34.  
  35.         NOTE: This is only the beginning of a list which I hope will
  36.         grow with your contributions.
  37.  
  38. See http://www.x.org/
  39. for the X Consortium welcome document (which contains links to getting X
  40. source code, intro to the X Consortium, X Technical Conference, the public ftp
  41. file server (ftp.x.org), and more.
  42.  
  43. See http://tommy.informatik.uni-dortmund.de/EXUG/EXUG.html
  44. for the EXUG (European X User Group) home page.
  45.  
  46. See http://www.osf.org:8001
  47. for the OSF Home Page.
  48.  
  49. See http://www.osf.org:8001/general/members.html
  50. for links to several OSF Sponsor and Member Web Servers.
  51.  
  52. See http://www.osf.org:8001/motif/list_features.html
  53. for a "Complete list of 2.0 features".
  54.  
  55. See http://www.osf.org:8001/motif/MotifFAQ.html
  56. for "OSF ANSWERS FREQUENTLY-ASKED OSF/MOTIF(R) QUESTIONS", including OSF/Motif
  57. Release 2.0 Questions, OSF/Motif Licensing. and OSF/Motif and the Common
  58. Desktop Environment.
  59.  
  60. See http://riwww.osf.org:8001/ri-home.html
  61. for the OSF Research Institute home page.
  62.  
  63. See http://nearnet.gnn.com/gnn/meta/internet/mkt/ora/center.html
  64. for O'Reilly & Associates, Inc.
  65.  
  66. See http://freedom.lm.com/freedom.html
  67. for Freedom Software ("Everything under the Sun regarding Motif").
  68.  
  69. See http://freedom.lm.com/review.html
  70. for Freedom Software's page with links to a review of Motif builders, list of
  71. Motif interface builders, commerical widgets, etc.
  72.  
  73. See http://tommy.informatik.uni-dortmund.de/EXUG/FAQ.html
  74. for X11 related FAQs (X, Xt, Motif, Free widgets, OPEN LOOK, InterView,
  75. Fresco, etc.).
  76.  
  77. See file://134.130.161.30/arc/pub/unix/html/motifcorner.html
  78. for Harry's Motif Programming Corner (tips and tricks, including code).
  79.  
  80. See http://www.wri.com/~cwikla/widget.html
  81. for John L. Cwikla's Widget FAQ Home Page (Composite Widgets, Non-Composite
  82. Widgets, Motif 1.1 Compatible, Motif 1.2 Compatible, Athena Compatible, FWF
  83. Widget Set, By Author, Shareware Widgets, Commercial Widgets).
  84.  
  85. See http://www.cs.cmu.edu:8001/afs/cs.cmu.edu/user/bam/www/toolnames.html
  86. for Brad A. Myers' `User Interface Software Tools' list (which is not limited
  87. to Motif tools).
  88.  
  89. See http://www.eit.com/software/winterp/winterp.html
  90. for WINTERP 2.0 Home Page (Niels Mayer).
  91.  
  92. See http://www.ics.com/
  93. for information about products sold by Integrated Computer Solutions.
  94. Included are product descriptions and lots of Frequently Asked questions (and
  95. answers!).
  96.  
  97. See
  98. http://akebono.stanford.edu/yahoo/Computers/Operating_Systems/Windowing_Systems/X_Window_System/Motif/
  99. for a collection of links to Motif info (including some of the above).
  100.  
  101. See http://www.cm.cf.ac.uk/Dave/X_lecture/X_lecture.html
  102. for David Marshall's Motif tutorial with source code and illustrations.
  103.  
  104. See http://www.aiai.ed.ac.uk/~jacs/wxwin.html
  105. for wxWindows information (toolkit for platform-independent GUI programming in
  106. C++).
  107.  
  108. -----------------------------------------------------------------------------
  109. Subject: 30)* Where can I get the HTML widget used in Mosaic?
  110.  
  111. [Last modified: Oct 94]
  112.  
  113. Answer:
  114.  
  115. From Ken Sall (ksall@cen.com): The HTML (HyperText Markup Language) widget is
  116. part of the NCSA Mosaic source code, located in the directory: Mosaic/Mosaic-
  117. source at ftp.ncsa.uiuc.edu (URL: ftp://ftp.ncsa.uiuc.edu/Mosaic/Mosaic-
  118. source/ )
  119.  
  120. For example, one version is: Mosaic-2.4.tar.gz.  When you uncompress (gunzip)
  121. and untar the source, look in the directory libhtmlw for HTML.c, HTML.h,
  122. HTMLP.h, etc.
  123.  
  124. For documentation, see
  125. http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/Docs/htmlwidget.html .
  126.  
  127.  
  128. For information on using Mosaic by remote control, see
  129. http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/Docs/remote-control.html
  130.  
  131. Here are more details from ah627@FreeNet.Carleton.CA (Samuel Effah):
  132.  
  133. To the numerous request for the NCSA HTML widget information.
  134.  
  135. Everything not already copyrighted by CERN is copyrighted by NCSA (including
  136. the contents of the libhtmlw, libnet, libXmx, and src directories, but not
  137. including the contents of libdtm, which is entirely public domain). ...
  138.  
  139.  * The UI grants you (hereafter, Licensee) a license to use the Software    *
  140.  * for academic, research and internal business purposes only, without a    *
  141.  * fee.  Licensee may distribute the binary and source code (if released)   *
  142.  * to third parties provided that the copyright notice and this statement   *
  143.  * appears on all copies and that no charge is associated with such         *
  144.  * copies.                                                                  *
  145.  *                                                                          *
  146. ( you can read more about the copyright in the Mosaic source code ).
  147.  
  148.  
  149. Documentation on the HTML widget can be located at:
  150.  
  151.   http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/Docs/htmlwidget.html
  152.   ( it's on the older version, I think Mosaic1.x )
  153.  
  154. For starters, you can compile directory Mosaic2.4/libhtmlw for the widget.
  155. Using: To create widget:
  156.   htlmWid = XtCreateManagedWidget( "htlmWid",
  157. htmlWidgetClass,                                      parent,
  158.                                      htlmArgs,
  159.                                      XtNumber( htlmArgs ));
  160.  
  161. Callback for anchors:
  162.   XtAddCallback(htlmWid, WbNanchorCallback, htmlRef, NULL);
  163.  
  164. where htmlRef() looks like:
  165.  
  166. static void htmlRef(widget, client_data, call_data) Widget widget; XtPointer
  167. client_data; WbAnchorCallbackData* call_data; {
  168.         buffer = readHTMLFile( call_data->href );
  169.         XtVaSetValues( widget, WbNtext, buffer, NULL ); }
  170.  
  171. where readHTMLFile() is
  172.  
  173. char * readHTMLFile( in_file ) char *in_flie; {
  174.   /* function to read a file and return its content, given
  175.      the file's name */ }
  176.  
  177.  
  178. I think this is enough to start you off.
  179.  
  180. Thanks to: Samuel Effah
  181.  
  182. -----------------------------------------------------------------------------
  183. Subject: 31)  TOPIC: BOOKS and JOURNALS
  184.  
  185. -----------------------------------------------------------------------------
  186. Subject: 32)  Is there a bibliography available?
  187.  
  188. [Last modified: Sept 94]
  189.  
  190. Answer: The X Bibliography, originally maintained by Ken Lee, is now
  191. maintained by Steve Mikes, uunet.uu.net!topgun!smikes.  Steve regularly posts
  192. to comp.windows.x and ba.windows.x a list of reference books and articles on X
  193. and X programming.  The X FAQ from comp.windows.x reproduces part of this
  194. list. The complete X bibliography is available via ftp from:
  195.  
  196.  
  197.         ftp.x.org:/contrib/docs/Xbibliography.ps
  198.         gatekeeper.dec.com:/pub/X11/R5-contrib/Xbibliography
  199.  
  200. -----------------------------------------------------------------------------
  201. Subject: 33)* Is there a Motif tutorial?
  202.  
  203. [Last modified: Oct 94]
  204.  
  205. Answer: See http://www.cm.cf.ac.uk/Dave/X_lecture/X_lecture.html
  206. for a hypertext Motif tutorial (by David Marshall) with source code and
  207. illustrations.
  208.  
  209. Marshall Brain at brain@adm.csc.ncsu.edu posted a set of simple and useful
  210. Motif tutorials.
  211.  
  212. Jan Borchers <job@ira.uka.de> writes about his Xmtutor:
  213.  
  214. A free version of "Xmtutor", a menu-driven Motif application that contains an
  215. interactive tutorial about programming with Motif with many executable
  216. examples, is available via anonymous ftp from ftp.uni-stuttgart.de, in:
  217. /pub/X11/programming/xmtutor-1.2/.
  218.  
  219. Xmtutor is very useful to learn Motif easier than with a book, and it is a
  220. convenient Quick Reference and resource-settings testbed for Motif application
  221. developers.
  222.  
  223. It has been tested on SUN Sparcs (SunOS 4.1) and DEC Alphas (OSF/1 1.3a), but
  224. should be working OK on most other Unix / X11R4/R5 / Motif 1.1/1.2 systems.
  225.  
  226. The demo version contains all the information to get you started with Motif,
  227. and upon registration, which costs 49 DM, you get the complete tutorial,
  228. describing all widgets, other topics such as inter-client communication,
  229. Compound Strings, etc., as well as a formatted TeX file of the tutorial to
  230. print out, which gives you a complete book about Motif.
  231.  
  232. -----------------------------------------------------------------------------
  233. Subject: 34)* What books are available for Motif programmers?
  234.  
  235. [Last modified: Oct 94]
  236.  
  237. Answer:
  238.  
  239.         NOTE: This answer is always "under construction". If you are the
  240.         author of, or an avid fan of, a book not listed here, send mail
  241.         to ksall@cen.com.  Corrections especially regarding new editions
  242.         and ISBN's would be greatly appreciated. Anyone have info on
  243.         the Motif 2.0 editions of the Prentice-Hall books?
  244.  
  245. First, we present the official books from OSF. Then we include an alphabetical
  246. listing of selected books. (See the following question for Xt and Xlib books.)
  247.  
  248.  
  249. The "official" OSF/Motif books are:
  250.  
  251. OSF/Motif Programmers Guide, Prentice-Hall ISBN 13-640525-8 (Motif 1.0), ISBN
  252. 0-13-640681-5 (Motif 1.1), ISBN 0-13-643107-0 (Motif 1.2) (NB: This makes use
  253. of the demo programs that you get with a Motif source license.  The programs
  254. are not included and may or may not be available on your system.)
  255.  
  256. OSF/Motif Programmers Reference Manual, Prentice-Hall ISBN 13-640517-17 (Motif
  257. 1.0), ISBN 0-13-640616-5 (Motif 1.1), ISBN 0-13-643115-1 (Motif 1.2) You will
  258. need this for the system calls.
  259.  
  260. OSF/Motif Style Guide, Prentice-Hall 13-640491-X (Motif 1.0), ISBN 0-13-
  261. 640673-4 (Motif 1.1), ISBN 13-643123-2 (Motif 1.2) You will need this to get
  262. some idea of how to write programs with the correct `look and feel'.
  263.  
  264.  
  265. Next is an alphabetical listing (by author) of a number of essential books not
  266. by OSF but in wide use. I will attempt to keep this list current if the
  267. authors (or their readers) send me updates as new editions become available.
  268.  
  269. Barkakati, Nabajyoti, X Window System Programming, SAMS. ISBN 0-672-22750-9.
  270. This contains a section on Motif.
  271.  
  272. Berlage, Thomas Berlage, OSF/Motif: Concepts and Programming, Addison-Wesley,
  273. UK, 1991. ISBN 0-201-55792-4.
  274.  
  275. Ferguson, Paula & Brennan, David, Motif Reference Manual, Volume 6B, O'Reilly
  276. & Associates, 1st Edition June 1993, 920 pages, ISBN: 1-56592-038-4.  "Dan
  277. Heller's Motif Programming Manual [Volume 6A, below] has long been considered
  278. the most authoritative and insightful work on Motif. Now, with the addition of
  279. this companion reference manual, programmers can dispense completely with the
  280. original OSF documentation. In addition to covering the entire Motif toolkit,
  281. this book also covers OSF's "User Interface Language" or UIL, and the Motif
  282. Resource Manager (MRM) functions used to tie together applications with user
  283. interfaces defined in UIL."
  284.  
  285. Flanagan, David, Motif Tools: Streamlined GUI Design and Programming with the
  286. Xmt Library, O'Reilly & Associates, 1st Edition August 1994, 1024 pages, ISBN:
  287. 1-56592-044-9.  "Motif Tools and the Xmt programming library that accompanies
  288. it on CD-ROM offer resources to empower Motif programmers and dramatically
  289. speed up application development with the X Toolkit and Motif.  The Xmt
  290. library contains nine custom widgets and over 250 convenience routines that
  291. handle many tricky aspects of GUI programming. The Layout widget, for example,
  292. is an incredibly flexible manager widget that makes the confusing and awkward
  293. Motif Form widget a thing of the past. And a single Menu widget will create an
  294. entire pulldown menu system for your application by reading a special menu
  295. description from a resource file or your C code. Other features of the library
  296. dramatically simplify the use of Motif XmStrings, automate the transfer of
  297. data between the fields of an application's data structures and the widgets of
  298. its dialog boxes, and make it possible to automatically create a widget
  299. hierarchy completely described in a resource file."
  300.  
  301. Heller, Dan, Ferguson, Paula M. & Brennan, David, Motif Programming Manual,
  302. Volume 6A, O'Reilly & Associates, 2nd Edition February 1994, ISBN: 1-56592-
  303. 016-3.  "The Motif Programming Manual describes how to write applications
  304. using the Motif toolkit from the Open Software Foundation (OSF). The book goes
  305. into detail on every Motif widget class, with useful examples that will help
  306. programmers to develop their own code. Anyone doing Motif programming who
  307. doesn't want to have to figure it out on their own needs this book." Although
  308. updated for Motif 1.2, it is still usable with Motif 1.1.
  309.  
  310. Johnson, Eric F. and Kevin Reichard, Power Programming Motif, second edition,
  311. MIS: Press, New York, NY, 1993. ISBN 1-55828-322-6.
  312.  
  313. Johnson, Eric F. and Kevin Reichard, Professional Graphics Programming in the
  314. X Window System, MIS: Press, New York, NY, 1993. ISBN 1-55828-255-6.  This
  315. book covers difficult topics such as combining non-default visuals and color
  316. overlay planes with Motif applications.
  317.  
  318. Newmarch, Jan, The X Window System and Motif - A Fast Track Approach.
  319. Addison-Wesley, ISBN 0-201-53931-4.  As the long-time maintainer of this Motif
  320. FAQ, Jan's book is bound to contain unusual and useful insights.
  321.  
  322. O'Reilly and Associates publishes an entire series of books concerning
  323. different aspects of the X Window System, including a number of books about
  324. Motif, as well as books on Xlib, Xt, and PEX. In this FAQ, we list O'Reilly
  325. books by the authors' names. For a summary of all of O'Reilly's X11 series,
  326. see:
  327.  
  328.     ftp://ftp.x.org/contrib/docs/Xbibliography.OReilly
  329.  
  330. As of this writing, however, the above list was somewhat out-dated.
  331. Therefore, telnet to gopher.ora.com, login as "gopher", select "Detailed
  332. Product Descriptions", and then "X". WWW users can open this URL:
  333.  
  334.     gopher://gopher.ora.com/11/descriptions/X
  335.  
  336. Sebern, Mark "Building OSF/Motif Applications: A Practical Introduction". The
  337. ISBN is 0-13-122409-3. Prentice-Hall. The book uses a large, realistic Motif
  338. application (a program to make slides for presentations) to demonstrate the
  339. use of Motif features. Both UIL and toolkit calls are discussed, though UIL is
  340. featured, both in the examples and in a reference chapter.
  341.  
  342. Smith, Jerry, Designing X Clients with Xt/Motif, ISBN 1-55860-255-0 Morgan
  343. Kaufmann Publishers This adopts a higher-level approach to many of the objects
  344. that commonly occur in Motif but are not in the Motif API.
  345.  
  346. Young, Douglas, "Object-Oriented Programming with C++ and OSF/Motif", Prentice
  347. Hall, 1992. ISBN 0-13-630252-1. Source code is
  348. ftp://ftp.x.org/contrib/book_examples/young.cxx.tar.Z
  349.  
  350. Young, Douglas, "The X Window System: Programming and Applications with Xt,
  351. Motif Edition", Prentice Hall, 1994. ISBN 0-13-123803-5. This is the classic
  352. tutorial from 1989 updated for Motif 1.2.  Source code is
  353. ftp://ftp.x.org/contrib/book_examples/young2.motif.tar.Z
  354.  
  355. Young, Douglas, "Motif Debugging and Performance Tuning", Prentice Hall, 1995.
  356. ISBN 0-13-147984-9. Source code is
  357. ftp://ftp.x.org/contrib/book_examples/young.debug.tar.Z
  358.  
  359. If you want to learn about UIL, one source is the "Motif Programmers's Guide"
  360. from Prentice-Hall.  However, excellent UIL coverage appears in the O'Reilly
  361. and Associates books "Motif Programming Manual, Volume 6A" by Dan Heller and
  362. Paula M. Ferguson and in "Motif Reference Manual, Volume 6B" by Paula M.
  363. Perguson with UIL Material by David Brennan. (Yes, 6A and 6B were worth the
  364. wait!)
  365.  
  366. -----------------------------------------------------------------------------
  367. Subject: 35)* Which Xt and X books would also be helpful?
  368.  
  369. [Last modified: Oct 94]
  370.  
  371. Answer: You will also need books and references on Xt and Xlib, such as:
  372.  
  373. Asente, Paul J., and Swick, Ralph R., X Window System Toolkit, The Complete
  374. Programmer's Guide and Specification, Digital Press, 1990.  The Xt bible. A
  375. treasury of information, excellent and invaluable.  Distributed by Digital
  376. Press, ISBN 1-55558-051-3, Digital Press order number EY-E757E-DP; and by
  377. Prentice-Hall, ISBN 0-13-972191-6.
  378.  
  379. Cutler, Ellie, Gilly Daniel, and O'Reilly, Tim, The X Window System in a
  380. Nutshell, O'Reilly & Associates, 2nd Edition April 1992, 424 pages, ISBN: 1-
  381. 56592-017-1.  A quick reference guide to Xlib functions datatypes and events,
  382. Xt functions and datatypes, and the standard X clients.  The second edition is
  383. expanded and covers X11R4 and X11R5.
  384.  
  385. Flanagan, David, Programmer's Supplement for R5 of the X Window System,
  386. O'Reilly & Associates, 1991, ISBN: 0-937175-86-2.  A programmer's guide to all
  387. the new features in X11R5, with reference pages for the new functions. [NOTE:
  388. This may be out-of-print since it is not listed at gopher.ora.com.]
  389.  
  390. Flanagan, David, Editor, X Toolkit Intrinsics Reference Manual, Volume 5,
  391. O'Reilly & Associates, 3rd Edition April 1992, 916 pages, ISBN: 1-56592-007-4.
  392. "The X Toolkit Intrinsics Reference Manual is a complete programmer's
  393. reference for the X Toolkit. It provides reference pages for each of the Xt
  394. functions as well as the widget classes defined by Xt and the Athena widgets.
  395. This volume is based on Xt documentation from the X Consortium and has been
  396. re-edited, reorganized, and expanded...  The third edition of Volume 5 has
  397. been completely revised. In addition to covering Release 4 and Release 5 of X,
  398. all the man pages have been completely rewritten for clarity and ease of use,
  399. and new examples and descriptions have been added throughout the book."
  400.  
  401. Mui, Linda and Pearce, Eric, X Window System Administrator's Guide, Volume 8,
  402. O'Reilly & Associates, 1st Edition October 1992, CD-ROM Released May 1993,
  403. ISBN: 1-56592-052-X (with CD-ROM) "This book is the first and only book
  404. devoted to the issues of system administration for X and X-based networks,
  405. written not just for UNIX system administrators but for anyone faced with the
  406. job of administering X (including those running X on stand-alone
  407. workstations)..." A book for X system administrators, covering XDM, security,
  408. font management, X terminals, building X, etc.  Available with a CD-ROM
  409. containing the complete X source code.
  410.  
  411. Nye, Adrian, Xlib Programming Manual, Volume 1, O'Reilly and Associates, 3rd
  412. Edition July 1992,  824 pages, ISBN: 1-56592-002-3.  "Updated to cover X11
  413. Release 5, the Xlib Programming Manual is a complete guide to programming the
  414. X library (Xlib), the lowest level of programming interface to X. It includes
  415. introductions to internationalization, device-independent color, font service,
  416. and scalable fonts. Includes chapters on: X Window System concepts, A simple
  417. client application, Window attributes, The graphics context, Graphics in
  418. practice, Color, Events, Interclient communication, Internationalization, The
  419. Resource Manager, A complete client application, Window management, and Other
  420. programming techniques."
  421.  
  422. Nye, Adrian, Editor, Xlib Reference Manual, Volume 2, O'Reilly & Associates,
  423. 3rd Edition June 1992, ISBN 1-56592-006-6.  Contains reference pages, derived
  424. from the MIT specification, for all Xlib functions.  The third edition covers
  425. X11R4 and X11R5, including all the new internationalization and Xcms (Color
  426. Management System) functions.
  427.  
  428. Nye, Adrian & O'Reilly, Tim, X Toolkit Intrinsics Programming Manual, Motif
  429. Edition, Volume 4M, O'Reilly and Associates, 2nd Edition August 1992, 674
  430. pages, ISBN: 1-56592-013-9.  "Volume 4 is a complete guide to programming with
  431. the X Toolkit Intrinsics, the library of C language routines that facilitates
  432. the design of user interfaces with reusable components called widgets.  It
  433. provides concepts and examples that show how to use the various X Toolkit
  434. routines. The first few chapters are devoted to using widgets; the remainder
  435. of the book covers the more complex task of writing new widgets.  Volume 4 is
  436. available in two editions. The Motif Edition uses the Motif 1.2 widget set in
  437. examples, and covers X11 Release 5."
  438.  
  439. Quercia, Valerie & O'Reilly, Tim, X Window System User's Guide, Motif Edition,
  440. Volume 3M, O'Reilly and Associates, 2nd Edition January 1993, 956 pages, ISBN:
  441. 1-56592-015-5.  "The X Window System User's Guide, Motif Edition orients the
  442. new user to window system concepts and provides detailed tutorials for many
  443. client programs, including the xterm terminal emulator and the window manager.
  444. Building on this basic knowledge, later chapters explain how to customize the
  445. X environment and provide sample configurations.  This alternative edition of
  446. the User's Guide highlights the Motif window manager, for users of the Motif
  447. graphical user interface.  Revised for Motif 1.2 and X11 Release 5."
  448.  
  449. Scheifler, Robert W., and Gettys, James, X Window System, The Complete
  450. Reference to Xlib, X Protocl, ICCCM, XLFD. Digital Press, 1992. The Xlib
  451. bible.  Third edition covers X11R5. ISBN 1-55558-088-2, Digital Press order
  452. number EY-J802E-DP.
  453.  
  454. For those interested in PHIGS and PEXlib, O'Reilly & Associates also publishes
  455. several books on these topics. See:
  456.  
  457.     gopher://gopher.ora.com/11/descriptions/3D
  458.  
  459. -----------------------------------------------------------------------------
  460. Subject: 36)* What relevant journals are available?
  461.  
  462. [Last modified: Oct 94]
  463.  
  464. Answer:
  465.  
  466. "The X Journal" is published bimonthly by SIGS Publications, 212-274-0640.
  467. Editorial information: editors%topgun@uunet.uu.net, editors@unx.com.
  468.  
  469. "The X Resource: A Practical Journal of the X Window System" is published
  470. quarterly by O'Reilly and Associates, 800-998-9938.  Editorial information:
  471. Paula Ferguson (paula@ora.com).  In addition to the valuable articles which
  472. appear in regular issues, the January issue of each year (issues 1, 5, 9,
  473. etc.) contains the proceedings of the Annual X Technical Conference sponsored
  474. by the X Consortium.  An on-line Table of Contents per issue can be accessed
  475. via gopher.  Telnet to gopher.ora.com, login as "gopher", select "Detailed
  476. Product Descriptions", and then "X Resource". Alternatively, the WWW URL is:
  477.  
  478.     gopher://gopher.ora.com/11/descriptions/XResource
  479.  
  480. Source code examples published in "The X Resource" appear organized by issue
  481. in the directory:
  482.  
  483.     ftp://ora.com/pub/examples/xresource
  484.  
  485.  
  486. -----------------------------------------------------------------------------
  487. Subject: 37)  TOPIC: MWM
  488.  
  489. -----------------------------------------------------------------------------
  490. Subject: 38)  What is the difference between Motif and mwm?
  491.  
  492. Answer: mwm is a window manager. Motif itself is made up of four parts: a
  493. User-Interface Guideline, an API toolkit of `C' routines which helps in the
  494. building of applications which conform to the Guideline, the window manager
  495. mwm, and a language UIL which is designed to ease user interface development.
  496. In general mwm will run an application built with any X-windows API, and in
  497. general an application built using the Motif toolkit will run under any window
  498. manager.
  499.  
  500.  
  501. -----------------------------------------------------------------------------
  502. Subject: 39)  Does anyone have an alternative set of 3-D defaults for a
  503. monochrome screen?
  504.  
  505. Answer: This is obviously a matter of taste. Some alternatives suggested
  506. include
  507.  
  508. !Benjamin Schreiber, bs@osf.osf.org, bs@cs.brandeis.edu
  509. Mwm*foreground:                 black           ! Actually, when a window is
  510. Mwm*background:                 white           ! deactivated, the background
  511. Mwm*backgroundPixmap:           50_foreground   ! becomes white, insted of
  512. Mwm*topShadowPixmap:            white           ! 50% foreground (grey)
  513.  
  514. Mwm*activeForeground:           black
  515. Mwm*activeBackground:           white
  516. Mwm*activeBackgroundPixmap:     50_foreground
  517. Mwm*activeTopShadowPixmap:      white
  518.  
  519. Mwm*menu*backgroundPixmap:      background
  520. Mwm*menu*topShadowPixmap:       50_foreground
  521.  
  522. Mwm*title*foreground:                   black
  523. Mwm*title*background:                   white
  524. Mwm*title*backgroundPixmap:             white
  525. Mwm*title*topShadowPixmap:              50_foreground
  526. Mwm*title*activeForeground:             white
  527. Mwm*title*activeBackground:             black
  528. Mwm*title*activeBackgroundPixmap:       black
  529. Mwm*title*activeBottomShadowPixmap:     50_foreground
  530.  
  531. Mwm*feedback*backgroundPixmap:          white
  532.  
  533. or
  534.  
  535. ! From: tsang@isi.com (Kam C. Tsang)
  536. Mwm*background:                      White
  537. Mwm*activeBackground:                White
  538. Mwm*activeBackgroundPixmap:          25_foreground
  539. Mwm*foreground:                      Black
  540. Mwm*activeForeground:                Black
  541. Mwm*menu*background:                 white
  542. Mwm*menu*foreground:                 black
  543. xterm*Foreground:                    black
  544. xterm*Background:                    white
  545.  
  546.  
  547. or
  548.  
  549. ! From: ucsd.edu!usc!snorkelwacker!paperboy!yee  (Michael K. Yee)
  550. Mwm*cleanText:                          True
  551.  
  552. Mwm*activeBackground:           white
  553. Mwm*activeForeground:           black
  554. Mwm*background:                 white
  555. Mwm*foreground:                 black
  556.  
  557. Mwm*client*activeBackgroundPixmap:      50_foreground
  558. Mwm*client*activeTopShadowPixmap:       foreground
  559. Mwm*client*activeBottomShadowPixmap:    background
  560.  
  561. !Mwm*client*background:                 white
  562. !Mwm*client*foreground:                 black
  563. Mwm*client*backgroundPixmap:            75_foreground
  564. Mwm*client*topShadowPixmap:             foreground
  565. Mwm*client*bottomShadowPixmap:          background
  566.  
  567. !Mwm*feedback*background:               white
  568. !Mwm*feedback*foreground:               black
  569. Mwm*feedback*backgroundPixmap:          50_foreground
  570. !Mwm*feedback*topShadowPixmap:          25_foreground
  571. !Mwm*feedback*bottomShadowPixmap:       background
  572.  
  573. !Mwm*menu*background:                   white
  574. !Mwm*menu*foreground:                   black
  575. Mwm*menu*backgroundPixmap:              foreground
  576. !Mwm*menu*topShadowPixmap:              foreground
  577. !Mwm*menu*bottomShadowPixmap:           background
  578.  
  579. !Mwm*icon*background:                   white
  580. !Mwm*icon*foreground:                   black
  581. Mwm*icon*activeBackgroundPixmap:        50_foreground
  582. Mwm*icon*activeBottomShadowPixmap:      foreground
  583. Mwm*icon*backgroundPixmap:              75_foreground
  584.  
  585.  
  586. -----------------------------------------------------------------------------
  587. Subject: 40)  How can I modify the Motif window manager decorations?
  588.  
  589. Answer: In resource files, use the window manager's client resource (which is
  590. the application) and the resource clientDecoration:
  591.  
  592.  
  593. Mwm*XClock.clientDecoration:   none
  594.  
  595. turns off all clock decorations.  See the mwm(1) entry for other
  596. possibilities.
  597.  
  598. Programmatically, set the VendorShell resource XmNmwmDecorations to
  599. appropriate values: MWM_DECOR_NONE (or a bitwise or of values).
  600.  
  601. -----------------------------------------------------------------------------
  602. Subject: 41)  Is there an ICCCM compliant way of setting window manager
  603. decorations?
  604.  
  605. Answer: Tom LaStrange (toml@LaStrange.COM) writes: "No, there is no ICCCM
  606. portable way to alter decorations." ----------
  607. -------------------------------------------------------------------
  608. Subject: 42)  How can I turn off the Motif window manager functions from the
  609. system menu?
  610. [Last modified: October 92]
  611.  
  612. Answer: The user of an application can control functions in the system menu
  613. for an application using the mwm resource clientFunctions:
  614.  
  615.         mwm.application_name.clientFunctions: -resize -close
  616.  
  617. Note that mwm will have to be restarted after putting this in their resource
  618. database.
  619.  
  620.  
  621. Answer: The writer of an application can only remove items.  Be warned that
  622. your users will probably gnash their teeth, swear furiously at your product
  623. and stop using it if they discover that you have done this.  (Especially if
  624. you have removed the Close button, your application has hung and it has taken
  625. up all of memory and swap so it can't be killed.) Much better is to catch the
  626. action gracefully as in the next question.
  627.  
  628.         #include <Xm/MwmUtil.h>
  629.  
  630.         XtVaGetValues(shell, XmNmwmFunctions, &int_val, NULL);
  631.         int_val &= ~(MWM_FUNC_CLOSE | MWM_FUNC_ALL);
  632.         XtVaSetValues(shell, XmNmwmFunctions, int_val, NULL);
  633.  
  634.  
  635. -----------------------------------------------------------------------------
  636. Subject: 43)  How can tell I if the user has selected the "Close" item on the
  637. system menu attached to the top-level shell?  I need to do some clean up
  638. before exiting.
  639.  
  640. [Last modified: May 93]
  641.  
  642. Answer:          This works with R4 Intrinsics
  643.  
  644.         #include <Xm/Protocols.h>
  645.  
  646.         void FinalCleanupCB(w, client_data, call_data)
  647.         Widget   w;
  648.         caddr_t  client_data, call_data;
  649.         {
  650.                 /* tidy up stuff here */
  651.                 ...
  652.                 /* exit if you want to */
  653.                 exit (0);
  654.         }
  655.  
  656.         main()
  657.         {
  658.                 Atom wm_delete_window;
  659.  
  660.                 ...
  661.                 XtRealizeWidget(toplevel);
  662.                 ...
  663.                 wm_delete_window =
  664.                         XmInternAtom(XtDisplay(toplevel),
  665.                                 "WM_DELETE_WINDOW", False);
  666.                 XmAddWMProtocolCallback(toplevel, wm_delete_window,
  667.                         FinalCleanupCB, NULL);
  668.                 XtMainLoop();
  669.         }
  670.  
  671. This will still kill the application.  To turn this behaviour off so that the
  672. application is not killed, set the shell resource XmNdeleteResponse to
  673. XmDO_NOTHING.  This means that users cannot kill your application via the
  674. system menu, and may be a bad thing.
  675.  
  676. If you are running R3, Bob Hays (bobhays@spss.com) has suggested this:
  677. "Trapping on the delete window atom does not work as I cannot force my action
  678. routine to the top of the action list for the activity desired, so the window
  679. manager kills my window anyway BEFORE I can do anything about it.  And, to
  680. make matters worse, the window manager (Motif in this case) tacks its atoms
  681. and handlers onto the window at some unknown point down the line after the
  682. creation of the shell widget as far as I can tell.  So....
  683.  
  684. I have a procedure as an action routine for ClientMessage.  Then, if I get a
  685. property change event on the window manager protocols, I then tack on
  686. WM_SAVE_YOURSELF.  If I get this request, I clean up (it seems to happen on
  687. WM_DELETE_WINDOW, BTW, if you remove WM_DELETE_WINDOW from the WM protocols
  688. atom) and exit.  Works great and is less filling overall:-)."
  689.  
  690.  
  691. -----------------------------------------------------------------------------
  692. Subject: 44)* Is there an mwm virtual desktop manager?
  693.  
  694. Answer: Peter E. Wagner (pew@cs.brown.edu): Imagine that your "desktop"
  695. extends beyond the view provided by your monitor.  A virtual window manager
  696. gives you access to the space beyond your viewport (i.e. your screen) by
  697. allowing you to move the viewport to other areas of the extended desktop.
  698.  
  699. The first one is Solbourne's swm, which spawned vtwm/tvtwm/olvwm.
  700.  
  701. David B. Lewis created one.  suresh@unipalm.co.uk has further developed it
  702. into the UniPalm product DOORS, which is only available as a source code
  703. extension to the MOTIF window manager.  The price of the source and unlimited
  704. right to distribute binaries is 10,000 pounds Sterling.  Alternately, source
  705. and right to use within one company is 2,000 pounds Sterling.  Contact Peter
  706. Dawe
  707.  
  708. Unipalm Limited                         Voice: +44 (0) 223 420002
  709. 216 The Science Park                    Fax:   +44 (0) 223 426868
  710. CAMBRIDGE
  711. CB4 4WA
  712.  
  713. An enhancement request for such an object has been filed with OSF.
  714.  
  715. Tim Failes (tim@aus.oz.au) of Advanced User Systems Pty Ltd writes: IXI has a
  716. fully supported product called Panorama which provides this facility.
  717. Panorama allows the user to pan around the virtual work space, dynamically
  718. change the size of the virtual workspace, and also access windows via an icon
  719. box.  Panorama also includes a point-and-click tool for setting resources such
  720. as colours, focus policy, etc. [IXI contact information appears in the "Where
  721. can I get Motif?" subject. -ed]
  722.  
  723. -----------------------------------------------------------------------------
  724. Subject: 45)  Why does mwm 1.2 crash on startup?
  725.  
  726. [Last modified: March 93]
  727.  
  728. Answer: From David Brooks: The commonest cause of early mwm demise is as
  729. follows:
  730.  
  731. - You, or someone, built Xlib in the default way using the Xsi
  732.   internationalization functions.
  733.  
  734. - Your Xlib wasn't installed completely (or at all).
  735.  
  736. - Early on, mwm calls the function XmbTextListToTextProperty, which calls
  737.   _XConvertMBToCT, which looks for the Xsi locale database, finds it
  738.   missing, ignores this fact and tries to dereference zero.
  739.  
  740. The workaround is to find the database *somewhere*, and point the environment
  741. variable XNLSPATH at it.  For example, in my personal X source tree:
  742.  
  743.         setenv XNLSPATH /home/X11r5src/mit/lib/nls/Xsi
  744.  
  745.  
  746. -----------------------------------------------------------------------------
  747. Subject: 46)  TOPIC: MOTIF DEVELOPMENT TOOLS (GUI BUILDERS and UIMS's)
  748.  
  749. -----------------------------------------------------------------------------
  750. Subject: 47)* What tools exist to assist in developing Motif applications?
  751.  
  752. [Last modified: Oct 94]
  753.  
  754. Answer: [A FAQ is not for "personal opinions" on these tools.  I don't think
  755. it is appropriate to give such opinions through this particular posting, so I
  756. haven't included any. I will include vendor-provided descriptions provided
  757. they are concise and informative. See Subject 0 for contribution details.]
  758.  
  759. `Prototyping tools' and `code generation tools' come in two forms:
  760.  
  761.     GUI (Graphical User Interface) builder -
  762.     those that can be used to design (and perhaps rehearse)
  763.     the interface only ; and
  764.  
  765.     UIMS (User Interface Management Systems) -
  766.     those that are a system supporting the development and
  767.     execution of user interfaces.
  768.  
  769. However, this distinction can be somewhat arbitrary when specific tools are
  770. categorized as either one or the other.  (Therefore, the classification below
  771. should be taken with a kilogram of salt. :-)
  772.  
  773. A number of commercial and non-commercial tools of both kinds that will
  774. support Motif are listed below. [NOTE: Vendors or individuals wishing to add
  775. their product or tool to this list, or to change their entry, should email to
  776. the maintainer of this FAQ.]
  777.  
  778. GUI builders:
  779.  
  780.         Builder Xcessory (bx)
  781.         Druid
  782.         ExoCODE/xm
  783.         iXBUILD (formerly X Build)
  784.         MOTIFATION
  785.         WKSH (Windowing Korn Shell)
  786.         X-Designer
  787.  
  788. UIMS:
  789.  
  790.         ALEX
  791.         ezX User Interface Management System
  792.         Galaxy
  793.         MetaCard
  794.         Serpent
  795.         TAE Plus
  796.         TeleUse
  797.         UIMX
  798.         Widget Creation Library (Wcl)
  799.         WINTERP
  800.         XFaceMaker2
  801.  
  802.  
  803. For users of the WWW, see also Brad A. Myers' `User Interface Software Tools'
  804. list (which is not limited to Motif tools):
  805. http://www.cs.cmu.edu:8001/afs/cs.cmu.edu/user/bam/www/toolnames.html
  806.  
  807.  
  808. Some contact addresses, presented in alphabetical order (without regard to GUI
  809. or UIMS categorization), follow:
  810.  
  811.  
  812. o  ALEX: For more information contact Michael Karliner on (+44) 81 566 2307 or
  813. E-mail to alex@s-strat.co.uk.  ALEX Technologies, Waterman's Yard, 32a The
  814. Mall, Ealing, London W5, UK.
  815.  
  816.  
  817. o  Builder Xcessory (bx): is from ICS.  More details are available by sending
  818. a request to info@ics.com.  Address:
  819.  
  820.         ICS Inc.,
  821.         201 Broadway,
  822.         Cambridge MA 02139,
  823.         Tel. (617) 621-0060,
  824.         Fax. (617) 621-9555
  825.         http://www.ics.com/
  826.  
  827.  
  828. o  Druid: is a commercial product. It currently supports Motif1.1 and 4 unix
  829. platforms: SPARC, HP 9000, RS6000, and SGI. For further information contact:
  830.  
  831.         Mr. Fred Lee,
  832.         Automated Systems (Pte) Limited,
  833.         203 Henderson Road, #12-07/14,
  834.         Henderson Industrial Park,
  835.         Singapore 0315.
  836.         FAX: (65)272-2029
  837.  
  838.  
  839. Or: Dr. Gurminder Singh (gsingh@iss.nus.sg), Institute of Systems Science,
  840. National University of Singapore
  841.  
  842.  
  843. o  ExoCODE/xm: From Expert Object Corp., 7250 Cicero Avenue, Lincolnwood, IL
  844. 60646 (708)676-5555.  Also: ExoCODE, EXOC, 500 Hyacinth Place, Highland Park,
  845. IL, 60035, (708) 926-8500, $1,500, Motif or OpenLook or SunView.
  846.  
  847.  
  848. o  ezX: Contact information:
  849.  
  850.         ezX User Interface Management System
  851.         Sunrise Software, International
  852.         170 Enterprise Center
  853.         Middletown, RI 02840
  854.         401-847-7868
  855.         email: support@sunrise.com
  856.  
  857.  
  858. o  Galaxy, Visix Software Inc., 11440 Commerce Park Drive, Reston, VA, 22091,
  859. (800) 832-8668, $9,600, Mac, Windows, Motif, OpenLook; very complete, Virtual
  860. Toolkit, UIMS
  861.  
  862.  
  863. o  iXBUILD (formerly X Build):
  864.  
  865.         iXOS Software GmbH,
  866.         Bretonischer Ring 12,
  867.         8011 Grasbrunn/Munich, Germany,
  868.         email support@ixos.de or office@ixos.de,
  869.         phone ++49-89-46005 0
  870.  
  871. or in the US:
  872.  
  873.         UniPress Software,
  874.         2025 Lincoln Hwy.,
  875.         Edison, NJ 08817,
  876.         phone 1-800-222-0550
  877.  
  878.  
  879. o  MetaCard: MetaCard 1.0 is supported on five popular UNIX/X11 platforms:
  880. SPARC, Sun3, DECstation, HP-9000/300, and SCO ODT.  An HP-9000/700 port is
  881. underway and should be available by the end of July.  [They] plan to support
  882. IBM RS/6000, SGI Iris, and DG AViiON sometime fall '92.  For more information,
  883. or to receive a free save-disabled but licensable copy of MetaCard, email to
  884. info@metacard.com or call 303- 447-3936.  If you have anonymous FTP access to
  885. the Internet, you can download the current engines, documentation, and an
  886. unlicensed Home stack from ftp.metacard.com (128.138.213.21), directory
  887. MetaCard.  Commercial users can get MetaCard from world.std.com
  888. (192.74.137.5), directory pub/Metacard.  If you don't have an anonymous ftp
  889. access, you can also download MetaCard from The World using kermit or xmodem
  890. from the ~ftp/pub/MetaCard directory.  Sign up by calling 617-739-0202 (voice)
  891. or via modem by dialing 617-739-9753 (7 bits even parity) and logging in as
  892. new.
  893.  
  894. MetaCard 1.2 Beta 5 is now available for anonymous FTP from ftp.metacard.com
  895. (directory MetaCard/1.2B5), and ftp.uu.net (directory vendor/MetaCard/1.2B5).
  896.  
  897. There is also a MetaCard mailing list.  To subscribe to the metacard-list,
  898. send mail to listserv@grot.starconn.com with the following commands in the
  899. body of the message:
  900.  
  901.       subscribe metacard-list firstname lastname
  902.       quit
  903.  
  904. Replace "firstname lastname" with your name, not your e-mail address.
  905.  
  906.  
  907. o  MOTIFATION: PEM GmbH, Vaihinger Strasse 49, 7000 Stuttgart 80, Germany,
  908. Tel: +49 (0) 711 713045, Fax: +49 (0) 711 713047 Email: basien@pem-
  909. stuttgart.de.  Available for (Motif 1.2/1.1) on SunOS, Solaris 2.1, HP,
  910. Interactive, ODT 3.0, Silicon Graphics, PCS, ...
  911.  
  912.  
  913. o  Serpent: The S/W is free (anonymous ftp) from ftp.sei.cmu.edu.  For more
  914. info contact erik/robert at serpent-info@sei.cmu.edu.  NOTE: This is no longer
  915. supported, and is apparently replaced by a commercial product called Alpha.
  916.  
  917.  
  918. o  TAE Plus: TAE Plus is a mature, portable software development environment
  919. that supports rapid prototyping, tailoring, and management of Motif-based
  920. graphical user interfaces.  It particularly supports GUI development by non-
  921. programmers and by programmers who are not well-versed in the details of X and
  922. Motif.  Its code generator can produce C, C++, and Ada code and allows for
  923. automatic merging of regenerated code with previously modified parts of the
  924. interface code.  It supports generation of a UIL/Mrm representation of the
  925. interface.
  926.  
  927. Scripting capabilities are provided to facilitate automatic testing, on-line
  928. demos, and tutorials.  A record and playback feature lets you build scripts
  929. simply by interacting with your GUI.  Dynamic Data Objects allow the developer
  930. to create pictorial objects (e.g., a thermometer to show temperature), whose
  931. dynamic portions (e.g., the mercury in the themometer) can change to reflect
  932. changing data or be directly manipulated by the end-user. TAE Plus is
  933. available on Sun, HP, IBM, SGI, and SCO Unix platforms.  Evaluation software
  934. is available via anonymous ftp.
  935.  
  936. TAE Plus contact information:
  937.  
  938.         Century Computing, Inc.
  939.         1014 West Street
  940.         Laurel, MD 20707
  941.         1-800-823-3228
  942.         tae-info@cen.com
  943.  
  944.  
  945. o  TeleUSE: Built around X Windows and OSF/Motif, TeleUSE's comprehensive
  946. toolset gives you maximum control over every phase of graphical user interface
  947. development, including static screen layout and design, automatic
  948. implementation of callbacks, building the executable, and the interactive
  949. test, debug, and maintenance cycles.  For more information, please contact:
  950.  
  951. In North America and countries not specified below:
  952.  
  953.         Alsys (formerly TeleSoft)
  954.         10251 Vista Sorrento Parkway Suite 300
  955.         San Diego, CA 92121 USA
  956.         (619) 457-2700 X244
  957.         (619) 452-1334 (fax)
  958.         leigh@alsys.com
  959.  
  960.         In France: +33 1 47 66 21 83
  961.         In the UK: +49 491 579 090
  962.         In Scandinavia: +46 8 520 69010
  963.         In the Benelux: +31 15 62 21 21
  964.         In Germany: +49 7531 65022
  965.         In Italy: +39 6 5045 1
  966.         In Japan: +81 3 522 85620
  967.         In South Korea: +82 2 577 2044
  968.  
  969.  
  970. o  UIMX:
  971.  
  972.         Visual Edge Software Limited
  973.         3870 Cote Vertu
  974.         St Laurent, Quebec
  975.         H4R 1V4
  976.         Phone: (514) 332-6430
  977.         Fax:   (514) 332-5914
  978. or:
  979.         Visual Edge Software Ltd.
  980.         101 First Street, Suite 443
  981.         Los Altos, CA 94022
  982.         Phone: (415) 948-0753
  983.         Fax:   (415) 948-0843
  984.  
  985.  
  986. o  Widget Creation Library (Wcl): The distribution is available in several
  987. ways.  The preferred approach it for you to get the compressed tar file using
  988. anonymous ftp from:
  989.  
  990.  
  991.         ftp.x.org       /R5contrib/Wcl-2.5.tar.Z
  992.         WWW URL: ftp://ftp.x.org/R5contrib/Wcl-2.5.tar.Z
  993.  
  994.  
  995. o  WINTERP: (Widget INTERPreter) An object-oriented rapid prototyping,
  996. development and delivery environment for building extensible applications with
  997. the OSF/Motif UI Toolkit and Xtango-based graphics/animation. By Niels Mayer
  998. (mayer@netcom.com).  Mailing list: winterp-request@netcom.com. Available via
  999. ftp from ftp.x.org:/contrib/devel_tools/winterp-2.xx.tar.gz (where 'xx' is
  1000. currently '03').
  1001.  
  1002. Key WINTERP Features:
  1003.  
  1004.         * High-level, Object-oriented interface to OSF/Motif and Xtoolkit.
  1005.         * High-level object-oriented 2.5D graphics&animation widget based
  1006.           on Xtango path transition animation system.
  1007.         * Ability to easily create new widget classes w/ complex graphical
  1008.           behavior using Xtango animation/graphics.
  1009.         * Automatic storeage management of all X/Xt/Motif data, Pixmaps,
  1010.           animations. Automatic resource conversion and management.
  1011.         * Asynchronous communications w/ other unix programs via
  1012.           expect-based subprocess facility.
  1013.         * Includes XmGraph to display graphs (both cyclic, acyclic,
  1014.           directed, undirected); graph nodes can be arbitrary widgets
  1015.           created by WINTERP; supports direct manipulation editing of graph.
  1016.         * GIF image support.
  1017.         * Lisp-eval server architecture supports inter-application
  1018.           communication.
  1019.         * Interactive programming via Gnu-Emacs or Motif-Text-widget interface.
  1020.         * Portable, small, fast, and free.
  1021.  
  1022.  
  1023. o  WKSH (Windowing Korn Shell):
  1024.  
  1025.         EXtensible Korn Shell (C language calling interface,
  1026.         dynamic library loading, etc.)
  1027.         Motif or OpenLook API
  1028.         X Toolkit Intrinsics
  1029.         WKSH Convenience Functions
  1030.         Fast Learning and Prototyping Feature (ksh interpreter)
  1031. Contact:
  1032.         Acacia Computer,
  1033.         PO Box 4376,
  1034.         Warren, NJ 07059,
  1035.         Phone: 908 548 6955,
  1036.         Email: uunet!aca1
  1037.  
  1038.  
  1039. or: Computer Aid Inc, 1-(800)-444-WKSH, or:
  1040.  
  1041.  
  1042.         Consensys Corp,
  1043.         Europe: +(44)-734-833241 (Roger Chalke), +(44)0734-835391 (Fax),
  1044.         US: (416)-940-2903, (416)-940-2903 (Fax).
  1045.  
  1046.  
  1047. WKSH was developed by USL. Binaries are available through Acacia Computer for
  1048. SUNOS, Solaris, SCO ODT, Intel SVR4.0
  1049.  
  1050.  
  1051. o  X-Designer: From Imperial Software Technology in the UK.  Email address is
  1052. sales@ist.co.uk.  (+44) 743 587055
  1053.  
  1054. V.I. Corporation have become the distributor for the X-Designer product in the
  1055. United States.  In addition, IST and V.I. Corporation have developed a product
  1056. called DVX-Designer that merges X-Designer with their GUI product called
  1057. DataViews.  Other merged products are in the works.  For more information,
  1058. people can contact:
  1059.  
  1060.         V.I. Corporation
  1061.         47 Pleasant Street
  1062.         Northampton, MA  01060
  1063.         Phone: (413) 586-4144
  1064.         Fax: (413) 586-3805
  1065.         Email: vi@vicorp.com
  1066.  
  1067.  
  1068. o  XFaceMaker2:
  1069.  
  1070.         NSL -  Non Standard Logics S.A.,
  1071.         57-59, rue Lhomond,
  1072.         75005  Paris - France,
  1073.         Phone: +33 (1) 43.36.77.50,
  1074.         Fax:   +33 (1) 43.36.59.78
  1075.         email: requests@nsl.fr or requests%nsl.fr@inria.fr for information.
  1076.  
  1077. Their North American office:
  1078.  
  1079.         Non Standard Logics, Inc.,
  1080.         4141 State Street, Suite B-11,
  1081.         Santa Barbara CA 93110,
  1082.         Tel: 805 964 9599,
  1083.         Fax: 805 964 4367
  1084.  
  1085. -----------------------------------------------------------------------------
  1086. Subject: 48)  TOPIC: GEOMETRY MANAGEMENT
  1087.  
  1088. [NOTE: As you can see, this is a new topic area. Send me your ideas for
  1089. answered questions pertaining to this topic.]
  1090.  
  1091. -----------------------------------------------------------------------------
  1092. Subject: 49)  Why is geometry management so important?
  1093.  
  1094. [Last modified: Sept 94]
  1095.  
  1096. Answer: Geometry management is a key element of Motif applications for reasons
  1097. which include, but are not limited to, the following:
  1098.  
  1099.  
  1100.     The user should be able to re-size the shell and get
  1101.     some reasonable geometry response (other than clipping).
  1102.  
  1103.     The user should be able to tailor fonts and have the
  1104.     widgets adjust accordingly.  (Many people over 40 simply
  1105.     can't read small fonts without serious eye strain.)
  1106.  
  1107.     When the designers decide to change a label, the widgets
  1108.     should re-adjust accordingly.
  1109.  
  1110.     Some labels must be set dynamically and the widgets should
  1111.     re-layout accordingly.
  1112.  
  1113.     An internationalized application must work with several resource
  1114.     files, one for each supported natural language.  The labels in each
  1115.     file have different lengths and the application should adjust
  1116.     accordingly.
  1117.  
  1118.  
  1119. -----------------------------------------------------------------------------
  1120. Subject: 50)+ What are good references for reading about geometry management?
  1121.  
  1122. [Last modified: Oct 94]
  1123.  
  1124. Answer: See the BOOKS topics for detailed reference information.  "X Toolkit
  1125. Intrinsics Programming Manual" (Nye & O'Reilly) contains an entire chapter on
  1126. geometry management, as does "X Window System Toolkit" (Asente & Swick) on
  1127. which the O'Reilly book is based.  Another good reference is the discussion of
  1128. the "geometry_manager" and "query_geometry" methods in "X Toolkit Intrinsics
  1129. Reference Manual".
  1130.  
  1131. "Motif Programming Manual" (Heller & Ferguson) has a chapter devoted to Motif
  1132. Manager widgets.  Finally, the widget documentation for each geometry manager
  1133. widget typically describes its policy in detail.
  1134.  
  1135. -----------------------------------------------------------------------------
  1136. Subject: 51)+ Why don't my labels resize in a RowColumn widget?  I have a
  1137. RowColumn widget in my application, with several rows and columns of XmLabels.
  1138. When I update the text in the labels, the label's width does not get updated.
  1139.  
  1140. [Last modified: Oct 94]
  1141.  
  1142. Answer: Make sure all the ancestor widget resize mechanisms are enabled:
  1143.  
  1144.    - on shells, set XmNallowShellResize
  1145.    - on row column, set XmNresizeWidth and XmNresizeHeight
  1146.    - on bulletin board and form, set XmNresizePolicy
  1147.  
  1148. Also, set XmNrecomputeSize on the label itself.  The shell resource is off by
  1149. default; the others should be on by default.
  1150.  
  1151. Thanks to Ken Lee, kenton@esd.sgi.com
  1152.  
  1153. -----------------------------------------------------------------------------
  1154. Subject: 52)+ Why do dialogs appear smaller under 1.2.3 and later?  The same
  1155. problem occurs with parts of a complex main window.  All of my dialogs which
  1156. were fine under 1.2.2 and earlier come up too small to work with under 1.2.3
  1157. (or later). Why?
  1158.  
  1159. A. Thanks to David Brooks (dbrooks@ics.com) for pointing me to Daniel
  1160. Dardailler (daniel@x.org) who wrote this scholarly treatise:
  1161.  
  1162.       Application's Geometry Management Advanced Guidelines:
  1163.       =====================================================
  1164.       (or "How to properly manage children of already realized parent")
  1165.  
  1166. Xt Background:
  1167. -------------
  1168.  
  1169.     XtCreateWidget:        call Initialize ;
  1170.  
  1171.     XtManageChild:         if (parent realized)
  1172.                               call ChangeManaged ;
  1173.                               call Realize ;
  1174.  
  1175.     XtRealizeWidget:       postorder ChangeManaged loop ;
  1176.                            preorder Window-creation loop ;
  1177.  
  1178.  
  1179. Creating a widget only invokes its Initialize method (its parent's
  1180. InsertPosition method too, but that has nothing to do with GM).
  1181. Composite widgets, by opposition to Primitive, does
  1182. not usually get a correct size at initialization time, since their
  1183. correct size is based on their children sizes, which do not exist yet
  1184. at this time.
  1185.  
  1186. Applications usually create an entire tree of managed but
  1187. unrealized widgets and then realize their top level widget, which recursively
  1188. realize every widgets in the tree. During the creation process, the
  1189. managing of the unrealized widgets is a no-op (only mark them managed).
  1190.  
  1191. When XtRealizeWidget(toplevel) happens, the change_managed methods of
  1192. all the composite widgets in the tree are called in bottom-to-top
  1193. order, thus giving each of them a chance to determine their own size
  1194. based on their children *current* sizes (composite or not).
  1195. Using the current size of the children in this situation is fine,
  1196. since they should also be the children's preferred size, not
  1197. yet constrained by the parents layout (post-order traversal).
  1198.  
  1199. When one create a widget inside an already realized parent, this is
  1200. a different story and the order of management vs realization is important.
  1201.  
  1202. Consider a MessageBox created in a realized Frame.
  1203. The MessageBox itself creates a bunch of managed children
  1204. inside its Initialize method.
  1205. If you manage the MessageBox right after its creation, the Frame
  1206. ChangeManaged will be called (since it is realized), and its will use
  1207. the MessageBox current size as its base for its own size.
  1208. Unfortunately, the MessageBox ChangeManaged proc has never been called!
  1209. so its current size is whatever the default is, usually a non-settable
  1210. value (needed for tracking real initial size setting).
  1211. The MessageBox ChangeManaged has not been called because its children
  1212. were created and managed at a time where it wasn't realized.
  1213.  
  1214. What to do ?
  1215.  
  1216. The first solution would be to have all the ChangeManaged methods in
  1217. Motif call XtQueryGeometry instead of using the current size if it's
  1218. not the first time (i.e. if they're already realized).
  1219. But this is a lot of code to change and a kind of expensive run-time
  1220. process as it results in non-linear traversal order of the realized
  1221. tree (looks like an O(n!) but I'm not sure).
  1222. It's not even guaranteed that it will always work fine, since it relies on
  1223. the assumption that the geometry queried is the same that the geometry
  1224. asked for any manager (I mean, it might be the case, but if it's not,
  1225. it's just more code to fix in a very "bc-sensitive" part of Xm).
  1226.  
  1227.  
  1228. This other solution lies into the application, and is to realize a
  1229. manager first and then to manage it.
  1230. By realizing it, you are forcing its ChangeManaged proc to be
  1231. called (XtRealizeWidget does that), it will get a correct size and
  1232. this size will be used by its parent ChangeManaged when
  1233. you'll manage the manager. By explicitly realizing the branch
  1234. before managing its root, you are reproducing the ordering that
  1235. is typical of most applications at startup.
  1236.  
  1237. So the trick is:
  1238.  
  1239.         XtCreateWidget(realize_parent, MessageBox);
  1240.         XtRealizeWidget(MessageBox);  /* needed */
  1241.         XtManageChild(MessageBox);
  1242.  
  1243. and the model is:
  1244.  
  1245.     "Always explicitly realize a composite widget child of an already
  1246.      realized parent before managing it if all its children have been
  1247.      already managed"
  1248.  
  1249. One can always realize every widget children of realized parents, that
  1250. won't hurt, but it's useless for Primitives and Composites that
  1251. get more children added later in the program.
  1252. Why? because Primitives get their correct size at initialization
  1253. time anyway and adding a child to a Composite will generate a geometry
  1254. request and a layout that will have the same effect as if the
  1255. ChangeManaged method had been called (well, nearly the same effect,
  1256. that a complication I will address later).
  1257.  
  1258. If we consider Motif, this trick is only useful for MessageBox,
  1259. SelectionBox and subclasses, and Scale, since those are the only
  1260. Composites that create managed children in their Initialize method and
  1261. don't usually get additional kids from the application.
  1262.  
  1263. However, any application that re-creates this order of actions will
  1264. need to apply the "realize<manage" method too.
  1265. For instance:
  1266.  
  1267.         XtCreateWidget(realize_parent, DrawingArea);
  1268.         XtRealizeWidget(DrawingArea);   /* not needed */
  1269.         XtManageChild(DrawingArea);
  1270.         XtCreateWidget(DrawingArea, any_child) ;
  1271.         XtManageChild(any_child);
  1272. but
  1273.         XtCreateWidget(realize_parent, DrawingArea);
  1274.         XtCreateWidget(DrawingArea, any_child) ;
  1275.         XtManageChild(any_child);
  1276.         XtRealizeWidget(DrawingArea);   /* needed */
  1277.         XtManageChild(DrawingArea);
  1278.  
  1279. Now this is becoming interesting: there are exceptions to the model :-)
  1280.  
  1281. The first one is the Xt Shell widget, which has what I consider to be a
  1282. bug, but what MIT has, until recently, always considered to be a specific
  1283. behavior overridable by a subclass (like our VendorShell):
  1284. the ChangeManaged method always resizes the child to its own size
  1285. when the Shell is realized.
  1286.  
  1287. A side effect of this behavior is that even the realized<managed trick
  1288. won't work for direct descendant of Shell widget:
  1289.  
  1290.         XtCreateWidget(realize_shell, MessageBox);
  1291.         XtRealizeWidget(MessageBox);  /* needless */
  1292.         XtManageChild(MessageBox);    /* will get resized anyway */
  1293.  
  1294. To get rid of this problem, one needs to add a regular manager
  1295. between the Shell and the MessageBox in this case, for the sake
  1296. of having this manager doing a request to the Shell from its
  1297. ChangeManaged proc. This request will then be handled by the Shell
  1298. geometry manager, not its ChangeManaged proc, and it will take into
  1299. account the child size.
  1300. Note that we could also change our VendorShell ChangeManaged code to not
  1301. systematically envelop the Xt Shell ChangeManaged class method, and
  1302. check for the already realized case, but I would rather wait
  1303. for an Xt fix instead (I'm working on it).
  1304.  
  1305. If you broader the scope of the Xt Shell situation, you find that there are
  1306. also some resources in Xm that come into effect upon geometry request
  1307. reception but are not used in the ChangeManaged method.
  1308.  
  1309. Take the PanedWindow constraint resource XmNallowResize for instance,
  1310. which controls the validity of a geometry request made by a PW child.
  1311.  
  1312. If you do:
  1313.  
  1314.         XtCreateWidget(realize_shell, PanedWindow);
  1315.         XtManageChild(PanedWindow);
  1316.  
  1317.         XtCreateWidget(PanedWindow, button);
  1318.         XtManageChild(button);
  1319.  
  1320. that works fine since the ChangeManaged of the PanedWindow will
  1321. handle the insertion of the button and allowResize won't be used.
  1322.  
  1323. But if you add a manager in this hierarchy:
  1324.  
  1325.         XtCreateWidget(realize_parent, PanedWindow);
  1326.         XtManageChild(PanedWindow);
  1327.  
  1328.         XtCreateWidget(PanedWindow, manager);
  1329.         XtManageChild(manager);
  1330.  
  1331.         XtCreateWidget(manager, button);
  1332.         XtManageChild(button);
  1333.  
  1334. That doesn't work anymore since the button management results in
  1335. its parent manager's ChangeManaged being called, which in turn makes a
  1336. *request* to the PanedWindow, resulting in a No reply because
  1337. of allowResize (set to False by default).
  1338.  
  1339. The PanedWindow parent wouldn't have been realized that everything
  1340. would have worked fine, since no request would have been made.
  1341. It really depends on the early realization scheme.
  1342.  
  1343. I think XmNresizable in Form is the only other resource to present
  1344. this problem. There is not much to do in those cases except than
  1345. setting the corresponding resource to True, which makes sense.
  1346.  
  1347.  
  1348. -----------------------------------------------------------------------------
  1349. Subject: 53)  TOPIC: TEXT WIDGET
  1350.  
  1351. -----------------------------------------------------------------------------
  1352. Subject: 54)* How do XmTextField and a single line XmText widget differ?
  1353.  
  1354. [Last modified: Oct 94]
  1355.  
  1356. Answer: XmTextField is designed to be a lightweight, single line text editor.
  1357. It does not provide as much functionality as does XmText in order to achieve
  1358. better performance.
  1359.  
  1360. Thanks to Kevin Till, kev@osf.org
  1361.  
  1362. -----------------------------------------------------------------------------
  1363. Subject: 55)  Why does  pressing  <return> in a text widget do nothing?  This
  1364. happens using Motif 1.0 when I have a text widget inside a bulletin board (or
  1365. form) inside a dialog shell. (In Motif 1.1 it is fixed for both text and list
  1366. widgets.)
  1367.  
  1368. Answer: In single line mode, pressing the <return> key usually invokes the
  1369. activate() action, and in multi-line mode, the newline() action.  However,
  1370. whenever a widget is the child of a bulletin board widget which is the child
  1371. of a dialog shell, the bulletin board forces all of its children to translate
  1372. <return> to the bulletin board action Return() which is usually associated
  1373. with the default button of the dialog.  To restore the text actions of
  1374. activate() or newline(), you need to overide the Return() action of the
  1375. bulletin board.
  1376.  
  1377.  
  1378.         /* declarations */
  1379.         /* for a single line widget */
  1380.         char newTrans[] = "<Key>Return : activate()";
  1381.         /* for a multi line widget */
  1382.         char newTrans[] = "<Key>Return : newline()";
  1383.         XtTranslations transTable;
  1384.  
  1385.         /* in executable section */
  1386.  
  1387.         transTable = XtParseTranslationTable(newTrans);
  1388.  
  1389.         /* after creating but before managing text widget */
  1390.  
  1391.         XtOverrideTranslations(textWidget, transTable);
  1392.  
  1393.  
  1394. -----------------------------------------------------------------------------
  1395. Subject: 56)  When I add text to a scrolling text widget, how can I get the
  1396. new text to show?
  1397.  
  1398. [Last modified: Sept 94]
  1399.  
  1400. Answer: Use the (fully supported) function XmTextShowPosition:
  1401.  
  1402.         void XmTextShowPosition(w, position)
  1403.         Widget w;
  1404.         XmTextPosition position;
  1405.  
  1406. where the position is the number of characters from the beginning of the
  1407. buffer of the text to be displayed. If you don't know how many characters are
  1408. in the buffer, use XmTextGetLastPosition.
  1409.  
  1410.         position = XmTextGetLastPosition(w)
  1411.  
  1412.  
  1413. -----------------------------------------------------------------------------
  1414. Subject: 57)  Does the text widget support 16 bit character fonts?
  1415.  
  1416.  
  1417. [Last modified: November 92]
  1418.  
  1419. Answer: R5 has support for 16 bit character sets, and Motif 1.2 uses that.
  1420. Neither Motif 1.0 nor 1.1 support 16 bit sets.
  1421.  
  1422. -----------------------------------------------------------------------------
  1423. Subject: 58)  How can I stop the text widget from echoing characters typed?  I
  1424. need to turn off echo for password input.
  1425.  
  1426. Answer: Use the XmNmodifyVerifyCallback to tell when input is received. Set
  1427. the `doit' field in the XmTextVerifyCallbackStruct to False to stop the echo.
  1428. (In Motif 1.0 this will cause a beep per character: Live with it, because at
  1429. 1.1 you can turn it off.) Note that password hiding is inherently insecure in
  1430. X - someone may have an X grab on the keyboard and be reading all characters
  1431. typed in anyway.
  1432.  
  1433. Another solution often proposed is to set the foreground and background
  1434. colours to be the same, effectively hiding the text.  This has a major flaw:
  1435. someone may select the text (triple click the mouse to get the line), and then
  1436. paste the password into say an xterm with *different* foreground and
  1437. background colours.  This immediately shows the password.
  1438.  
  1439. -----------------------------------------------------------------------------
  1440. END OF PART TWO
  1441.  
  1442.